{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Nonlinear SVM Example\n",
    "\n",
    "This function wll illustrate how to implement the gaussian kernel on the iris dataset.\n",
    "\n",
    "Gaussian Kernel:\n",
    "\n",
    "$$K(x_{1}, x_{2}) = exp\\left(-\\gamma * (x_{1} - x_{2})^{2}\\right)$$\n",
    "\n",
    "We start by loading the necessary libraries and resetting the computational graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from sklearn import datasets\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Create a graph session"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Load the Iris Data\n",
    "\n",
    "Our x values will be (x1, x2) where x1 = 'Sepal Length', and x2 = 'Petal Width'\n",
    "\n",
    "The Target values will be wether or not the flower species is Iris Setosa."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Load the data\n",
    "# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]\n",
    "iris = datasets.load_iris()\n",
    "x_vals = np.array([[x[0], x[3]] for x in iris.data])\n",
    "y_vals = np.array([1 if y==0 else -1 for y in iris.target])\n",
    "class1_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class1_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class2_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==-1]\n",
    "class2_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Model Parameters\n",
    "\n",
    "We now declare our batch size, placeholders, and the fitted b-value for the SVM kernel.  Note that we will create a separate placeholder to feed in the prediction grid for plotting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Declare batch size\n",
    "batch_size = 150\n",
    "\n",
    "# Initialize placeholders\n",
    "x_data = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)\n",
    "prediction_grid = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "\n",
    "# Create variables for svm\n",
    "b = tf.Variable(tf.random_normal(shape=[1,batch_size]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Gaussian (RBF) Kernel\n",
    "\n",
    "We create the gaussian kernel that is used to transform the data points into a higher dimensional space.\n",
    "\n",
    "The Kernel of two points, $x$ and $x'$ is given as\n",
    "\n",
    "$$K(x, x')=exp\\left(-\\gamma|| x-x' ||^{2}\\right)$$\n",
    "\n",
    "For $\\gamma$ very small, the kernel is very wide, and vice-versa for large $\\gamma$ values.  This means that large $\\gamma$ leads to high bias and low variance models.\n",
    "\n",
    "If we have a vector of points, $x$ of size (batch_size, 2), then our kernel calculation becomes\n",
    "\n",
    "$$K(\\textbf{x})=exp\\left( -\\gamma \\textbf{x} \\cdot \\textbf{x}^{T} \\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Gaussian (RBF) kernel\n",
    "gamma = tf.constant(-1.0)\n",
    "sq_vec = tf.multiply(2., tf.matmul(x_data, tf.transpose(x_data)))\n",
    "my_kernel = tf.exp(tf.multiply(gamma, tf.abs(sq_vec)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Compute SVM Model\n",
    "\n",
    "Here, the SVM loss is given by two terms, The first term is the sum of the $b$ matrix, and the second term is \n",
    "\n",
    "$$\\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)$$\n",
    "\n",
    "We finally tell TensorFlow to maximize the loss by minimizing the negative:  (The following is a horribly abbreviated version of the dual problem)\n",
    "\n",
    "$$-\\left(\\sum\\textbf{b} - \\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)\\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Compute SVM Model\n",
    "first_term = tf.reduce_sum(b)\n",
    "b_vec_cross = tf.matmul(tf.transpose(b), b)\n",
    "y_target_cross = tf.matmul(y_target, tf.transpose(y_target))\n",
    "second_term = tf.reduce_sum(tf.multiply(my_kernel, tf.multiply(b_vec_cross, y_target_cross)))\n",
    "loss = tf.negative(tf.subtract(first_term, second_term))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Define the Prediction Kernel\n",
    "\n",
    "Now we do the exact same thing as above for the prediction points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Gaussian (RBF) prediction kernel\n",
    "rA = tf.reshape(tf.reduce_sum(tf.square(x_data), 1),[-1,1])\n",
    "rB = tf.reshape(tf.reduce_sum(tf.square(prediction_grid), 1),[-1,1])\n",
    "pred_sq_dist = tf.add(tf.subtract(rA, tf.multiply(2., tf.matmul(x_data, tf.transpose(prediction_grid)))), tf.transpose(rB))\n",
    "pred_kernel = tf.exp(tf.multiply(gamma, tf.abs(pred_sq_dist)))\n",
    "\n",
    "prediction_output = tf.matmul(tf.multiply(tf.transpose(y_target),b), pred_kernel)\n",
    "prediction = tf.sign(prediction_output-tf.reduce_mean(prediction_output))\n",
    "accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.squeeze(prediction), tf.squeeze(y_target)), tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Optimizing Method\n",
    "\n",
    "We declare our gradient descent optimizer and intialize our model variables (`b`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Declare optimizer\n",
    "my_opt = tf.train.GradientDescentOptimizer(0.01)\n",
    "train_step = my_opt.minimize(loss)\n",
    "\n",
    "# Initialize variables\n",
    "init = tf.global_variables_initializer()\n",
    "sess.run(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Run the Classification!\n",
    "\n",
    "We iterate through the training for 300 iterations. We will output the loss every 75 iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Step #75\n",
      "Loss = -114.099\n",
      "Step #150\n",
      "Loss = -226.599\n",
      "Step #225\n",
      "Loss = -339.099\n",
      "Step #300\n",
      "Loss = -451.599\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_vec = []\n",
    "batch_accuracy = []\n",
    "for i in range(300):\n",
    "    rand_index = np.random.choice(len(x_vals), size=batch_size)\n",
    "    rand_x = x_vals[rand_index]\n",
    "    rand_y = np.transpose([y_vals[rand_index]])\n",
    "    sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    \n",
    "    temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    loss_vec.append(temp_loss)\n",
    "    \n",
    "    acc_temp = sess.run(accuracy, feed_dict={x_data: rand_x,\n",
    "                                             y_target: rand_y,\n",
    "                                             prediction_grid:rand_x})\n",
    "    batch_accuracy.append(acc_temp)\n",
    "    \n",
    "    if (i+1)%75==0:\n",
    "        print('Step #' + str(i+1))\n",
    "        print('Loss = ' + str(temp_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Plotting Results\n",
    "\n",
    "We now create a fine mesh for plotting the SVM class lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Create a mesh to plot points in\n",
    "x_min, x_max = x_vals[:, 0].min() - 1, x_vals[:, 0].max() + 1\n",
    "y_min, y_max = x_vals[:, 1].min() - 1, x_vals[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),\n",
    "                     np.arange(y_min, y_max, 0.02))\n",
    "grid_points = np.c_[xx.ravel(), yy.ravel()]\n",
    "[grid_predictions] = sess.run(prediction, feed_dict={x_data: rand_x,\n",
    "                                                   y_target: rand_y,\n",
    "                                                   prediction_grid: grid_points})\n",
    "grid_predictions = grid_predictions.reshape(xx.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11ba42630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\neMNHS5Ys4aCDDmLZsmXtsrWiooIRI0bwne98B2ibKFRXV1NRUUF9fT01NTXtOj7seQ69Avjvf/+b\nUaNG8dlnn7V7352NikIMrCjMnj2bAw44IKanYFuH4SrltvD111/H1XpZvXo1LS0trF27Nmj5pk2b\nQgapuSv3eHIC9uEK5ynYfRhjWL58edik4fr16ykpKeH111+Peax4cVe01iuKhLu8dXV1QefD+/C6\nWblyZdB3tyjE8rDc20aqnBYtWkRjYyP3338/ra2t/PWvf426z67AXY5wjSBjTMg95K1UrSh4t7Me\nm72XNm/29y+J5jlH45FHHgk6TlVVVdytfvdzszd5sq+//prm5uaQ+2r58uWAP7/SU1BRiIEVgP32\n24/c3NyoonDFFVfwu9/9LuY+wz1kjz/+ONdff73zva6uLiR0Ew57I7sr5UMOOQRjTEhF7d5Xe0XB\nXSmXlZWxefNmdu3aRXl5ecjv7bJYSdf58+czcuRITj/9dF5//XWmTp0aUvl+/vnnfOtb32LRokXO\nskiiUFtby6mnnhrU8mxoaHAqI5/PF1Rhz5gxg1dffTWiR7NkyRLnc6yR7e5tH3roIS677LKg9cYY\np8K1leBjjz3Gv/71LyZNmhQkZOCvME8++eSw5zeRxCpzTU1NyL3p9RRseK+srIwPPviASZMm0dDQ\nEOIp2P14y26XTZo0iffffz9oeWtrK+eddx7vvPMODz30UNC65ubmmM+NxV1Z740o2Huxrq6OL774\nglNPPZWamhqncRht3/X19XzrW99i8eLFnHDCCUHnvivoca/j7GysAKSlpZGdnR01fDRnzpy49rlx\n40bnszEGEWH+/Pl8+OGHTh9re5PV1tbi8/ki7svebO78wxFHHMHKlStDwhfuByWekeHxiIK96cPt\nr6KigtzcXN58803WrFnDgQceGPY4CxYsYO3ataxdu5Y33njDOU7v3r2dbRYtWsRbb73FIYcc4iyL\nJAqffvopb7/9NiLiLGtsbHQ8hYEDBzpla2lp4fHHH6d3794cf/zxYfe3YcMG0tPTaW5upqKigqKi\norDbQfC1nTNnDpWVldx5550UFxc7690t4vPOO4/nnnuO0047DfCHnw499FBn/ZIlS1i4cCEff/wx\nkydHm0qsY3GXo6qqir59+watD1fJeT0FW8mXlZVxzjnnsHnzZtatWxeSU4gmCuvWrWPBggUce+yx\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11bb0b470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEWCAYAAACnlKo3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcjXX/x/HXx16WUrSh1K26nRn7ZCmi+KHcIUtJWeqm\nRGlVSYuEW0pEUaikBUUlJZKUZJ2xjJkzKe2J0iKttj6/P87lbnJbp5m55sy8n4/H9ejMdZ1zrvfl\nivdcy/kec3dERESyolDYAUREJH6pREREJMtUIiIikmUqERERyTKViIiIZJlKREREskwlIiIHZGaP\nmtmdYeeQvEclInmGmX1qZs3CzpETzOxUM5tqZpvNbKuZfWhmY8ysYtjZ9mRm3c1sUeZ57t7L3e8N\nK5PkXSoRkWxkZkX2Mq8KsAz4Cqjl7mWAs4CPgIZh5xP5O1QiEhfMrKeZrTez783sFTM7IZhvZjbS\nzL4JfsNfa2aJwbLzzSxqZj+Z2QYzu3kf793dzN4zs4fN7Ecze9/MmmZafoSZPW5mG4P3GWxmhfd4\n7Ugz+w4YuJdVDATec/cb3f1LAHf/xt1HufvUTOv5l5mtNrMtZrbYzKpnWvapmd1sZqlBxmlmVuIQ\nXnurmaUCv5hZETO7zcw+Cv5somZ2YfDcqsCjQAMz+9nMtgTzJ5nZ4APtj2CZm1mv4Ghri5k9YmZ2\n4L0sccndNWnKExPwKdBsL/PPBb4FagPFgTHAwmBZCyAFOBIwoCpwfLBsI9AoeFwWqL2P9XYHdgI3\nAEWBi4EfgaOC5S8BjwElgWOA5cBVe7z2WqAIcNhe3n8T0P0A214L+AaoBxQGugV/HsUz/dksB04A\njgIygF6H8NrVQKXd+YCOwXsVCrb3l0x/bt2BRXvkmwQMPtD+CJY78GqwT04ENgMtw/7/S1POTDoS\nkXhwKfCEu690921Af2K/KVcGdgClgX8C5u4Z7r4xeN0OIGJmZdz9B3dfuZ91fAOMcvcd7j4NWAe0\nMrNjgfOB6939F3f/BhgJdMr02q/cfYy773T33/by3uWIFQkAZnZN8Bv6z2Y2IZh9JfCYuy9z913u\n/hSwDaif6X1Gu/tX7v49MAuoeYiv/WJ3Pnd/IXivP4Lt/RCou58/n8z2tz92G+buW9z9c2BBpqyS\nz6hEJB6cAHy2+wd3/xn4Dqjg7m8BDwOPAN+Y2XgzKxM8tT2xAvjMzN4xswb7WccGd888GulnwXpP\nInZ0sjH4h38LsaOSYzI994sD5P8OOD5T/ofd/UhgVPDeBOu5afc6gvVUCjLstinT41+BUofw2r9k\nNLOumU5/bQESiZXdwdjn/jiIrJLPqEQkHnxF7B9KAMysJHA0sAHA3Ue7ex0gApwG9Avmr3D3NsT+\nwX8ZeH4/66iwx3n7E4P1fkHst/py7n5kMJVx94RMzz3QUNjzgXYHeM4XwJBM6zjS3Q939ykHeN3B\nvva/Gc3sJGACcA1wdFBoacROBx7M9ux3f0jBohKRvKaomZXINBUBpgCXm1lNMysODAWWufunZnaG\nmdUzs6LEzuv/DvxhZsXM7FIzO8LddwBbgT/2s95jgL5mVtTMOhK7tjI7ODX2BjDCzMqYWSEz+4eZ\nNT6EbRoINDKzB82sAoCZlQvWsdsEoFewLWZmJc2slZmVPoj3P9TXliRWFJuDLJcTOxLZ7WugopkV\n28fr97k/DiKr5DMqEclrZgO/ZZoGuvubwJ3ADGIXy//Bn9ckyhD7R/QHYqdYvgPuD5Z1AT41s61A\nL2Ln8vdlGXAqsQvGQ4AO7v5dsKwrUAyIBuuZTqbTUwfi7h8Qu+hdEVhjZj8B7xH7jf7O4DnJQE9i\np+Z+ANYTu8B9MO9/SK919ygwAlhCrDCqBXl2ewtIBzaZ2bd7ef3+9ocUMPbX08AiBY+ZdQd6uHuu\nfmZDJD/QkYiIiGSZSkRERLJMp7NERCTLdCQiIiJZlu8HYytXrpxXrlw57BgiInElJSXlW3cvf6Dn\n5fsSqVy5MsnJyWHHEBGJK2b22YGfpdNZIiLyN6hEREQky1QiIiKSZSoRERHJsrgrETNraWbrgm9V\nuy3sPCIiBVlclYjFvpL0EeA8YsN+X2JmkXBTiYgUXHFVIsS+eW29u3/s7tuBqUCbkDOJiBRY8VYi\nFfjrN7R9yV+/TQ0AM7vSzJLNLHnz5s1ZWtEjjzzC3Llzs5ZSRKSAiLcSOSjuPt7dk9w9qXz5A37g\n8n/s2LGD8ePH07JlS7p3787333+fAylFROJfvJXIBmLfHb1bRXLgKzmLFi3KsmXLGDBgAM888wyR\nSIQZM2Zk92pEROJevJXICuBUMzs5+OrOTsArObGiEiVKMHjwYJKTkznhhBPo0KED7du3Z+PGjTmx\nOhGRuBRXJeLuO4FrgLlABvC8u6fn5Dpr1qzJ8uXLGTZsGK+99hqRSIQnn3wSDaEvIhJnJQLg7rPd\n/TR3/4e7D8mNdRYpUoRbb72VNWvWkJiYyBVXXEGLFi349NNPc2P1IiJ5VtyVSJhOP/103nnnHR55\n5BGWLFlCYmIio0ePZteuXWFHExEJhUrkEBUqVIjevXuTnp5Oo0aNuO666zj77LPJyMgIO5qISK5T\niWTRiSeeyOzZs5k8eTLvv/8+NWvWZMiQIezYsSPsaCIiuUYl8jeYGV26dCEajdK2bVvuuOMOzjjj\nDFJSUsKOJiKSK1Qi2eDYY49l2rRpvPTSS3z99dfUq1eP2267jd9++y3saCIiOUolko3atm1LNBql\ne/fu3HfffdSoUYOFCxeGHUtEJMeoRLJZ2bJlmThxIvPmzWPHjh00btyYPn36sHXr1rCjiYhkO5VI\nDmnWrBlpaWlcf/31jBs3jsTERF5//fWwY4mIZCuVSA4qWbIkI0eOZPHixZQuXZrzzz+fLl268O23\n34YdTUQkW6hEckH9+vVZuXIld955J1OnTiUSifD8889r6BQRiXsqkVxSvHhxBg0aREpKCieeeCIX\nX3wxF154IV999VXY0UREskwlksuqV6/O0qVLGT58OHPnziUSifD444/rqERE4pJKJARFihShX79+\npKamUqNGDXr06EGzZs34+OOPw44mInJIVCIhOvXUU1mwYAGPPvooK1asoFq1aowaNUoDOopI3FCJ\nhKxQoUJcddVVRKNRzjnnHG644QbOOuss0tNz9GtSRESyhUokj6hYsSKzZs3i2WefZf369dSqVYtB\ngwaxffv2sKOJiOyTSiQPMTM6d+5MRkYG7du35+677yYpKYkVK1aEHU1EZK9UInlQ+fLlmTJlCjNn\nzuS7776jfv369OvXj19//TXsaCIif6ESycNat25NNBqlR48ePPDAA9SoUYO333477FgiIv+lEsnj\njjjiCB577DHeeust3J1zzjmHXr168eOPP4YdTUREJRIvzjnnHFJTU7npppuYMGECCQkJvPrqq2HH\nEpECTiUSRw4//HAeeOABlixZQtmyZbngggvo3LkzmzdvDjuaiBRQKpE4VLduXVJSUhg4cCDTp08n\nEokwZcoUDZ0iIrlOJRKnihUrxt13383KlSs55ZRT6Ny5M61bt+bLL78MO5qIFCAqkTiXmJjI4sWL\nGTFiBPPnzychIYHx48fzxx9/hB1NRAoAlUg+ULhwYW688UbWrl1LnTp1uOqqq2jatCnr168PO5qI\n5HMqkXzkH//4B/Pnz2fChAmsXLmS6tWrM2LECHbu3Bl2NBHJp1Qi+YyZ0aNHD6LRKM2aNePmm2/m\nzDPPZO3atWFHE5F8SCWST1WoUIGZM2cydepUPv30U2rXrs3dd9/Ntm3bwo4mIvmISiQfMzMuvvhi\notEoF198MYMGDaJOnTosW7Ys7Ggikk+oRAqAcuXK8cwzz/Dqq6/y448/0qBBA2688UZ++eWXsKOJ\nSJxTiRQgrVq1Ij09nV69ejFy5EiqV6/OW2+9FXYsEYljKpECpkyZMowdO5a3336bQoUK0bRpU3r2\n7MmWLVvCjiYicUglUkA1btyY1NRUbrnlFp544gkikQgzZ84MO5aIxBmVSAF22GGHcd9997Fs2TLK\nlStH27Zt6dSpE998803Y0UQkToRSImbW0czSzewPM0vaY1l/M1tvZuvMrEWm+XXMbG2wbLSZWe4n\nz5+SkpJITk7m3nvv5aWXXqJq1ao888wzGtBRRA4orCORNKAdsDDzTDOLAJ2ABKAlMNbMCgeLxwE9\ngVODqWWupS0AihUrxh133MGqVas47bTT6NKlC//617/44osvwo4mInlYKCXi7hnuvm4vi9oAU919\nm7t/AqwH6prZ8UAZd1/qsV+PJwNtczFygRGJRFi0aBGjRo3i7bffJiEhgXHjxmlARxHZq7x2TaQC\nkPlX3y+DeRWCx3vO3yszu9LMks0sWV/YdOgKFy7MddddR1paGvXq1aN37940adKEDz74IOxoIpLH\n5FiJmNmbZpa2l6lNTq1zN3cf7+5J7p5Uvnz5nF5dvnXyySfzxhtv8Pjjj5OamkqNGjUYPny4BnQU\nkf/KsRJx92bunriXaX/3kW4AKmX6uWIwb0PweM/5ksPMjCuuuIJoNErLli259dZbqVevHmvWrAk7\nmojkAXntdNYrQCczK25mJxO7gL7c3TcCW82sfnBXVldAH2rIRSeccAIvvvgiL7zwAl9++SVJSUnc\neeedGtBRpIAL6xbfC83sS6AB8JqZzQVw93TgeSAKzAH6uPuu4GW9gYnELrZ/BLye68ELODOjQ4cO\nRKNROnfuzODBg6lVqxZLliwJO5qIhMTy+2cBkpKSPDk5OewY+dKcOXO46qqr+OKLL+jbty+DBw+m\nVKlSYccSkWxgZinunnSg5+W101kSR1q2bElaWhq9e/fmoYceolq1asybNy/sWCKSi1Qi8reULl2a\nhx9+mIULF1KsWDGaN2/OFVdcwQ8//BB2NBHJBSoRyRaNGjVizZo19O/fn8mTJxOJRHjppZfCjiUi\nOUwlItmmRIkSDB06lOXLl3PcccfRrl07OnbsyKZNm8KOJiI5RCUi2a527dosX76coUOHMmvWLCKR\nCJMnT9aAjiL5kEpEckTRokXp378/q1evpmrVqnTr1o3zzjuPzz77LOxoIpKNVCKSo/75z3/y7rvv\nMmbMGBYtWkRCQgIPP/ywBnQUySdUIpLjChUqxDXXXENaWhpnnXUW1157LWeffTbr1u1tIGcRiScq\nEck1lStXZs6cOUyaNIloNEqNGjX4z3/+w44dO8KOJiJZpBKRXGVmdOvWjWg0ygUXXMDtt99OvXr1\nWLVqVdjRRCQLVCISiuOOO44XXniBGTNm8NVXX3HGGWdw++238/vvv4cdTUQOgUpEQtWuXTsyMjLo\n2rUr//nPf6hRowaLFi0KO5aIHCSViISubNmyPPHEE8ydO5dt27bRqFEjrrnmGn766aewo4nIAahE\nJM9o3rw5aWlp9O3bl7Fjx5KYmMjcuXPDjiUi+6ESkTylVKlSPPTQQyxatIjDDz+cli1b0q1bN77/\n/vuwo4nIXqhEJE8688wzWbVqFQMGDOC5556jatWqTJ8+PexYIrIHlYjkWSVKlGDw4MGsWLGCihUr\n0rFjR9q1a8fGjRvDjiYiAZWI5Hk1a9Zk2bJlDBs2jNmzZxOJRHjyySc1oKNIHqASkbhQpEgRbr31\nVlJTU6lWrRpXXHEFzZs355NPPgk7mkiBphKRuHLaaafx9ttvM3bsWJYuXUpiYiKjR49m165dYUcT\nKZBUIhJ3ChUqxNVXX016ejqNGzfmuuuuo1GjRmRkZIQdTaTAUYlI3DrxxBN57bXXePrpp1m3bh01\na9ZkyJAhGtBRJBepRCSumRmXXXYZGRkZtG3bljvuuIOkpCRSUlLCjiZSIKhEJF845phjmDZtGi+9\n9BKbN2+mbt263Hrrrfz2229hRxPJ11Qikq+0bduWaDTKFVdcwfDhw6lRowYLFy4MO5ZIvqUSkXzn\nyCOPZMKECbz55pvs3LmTxo0b07t3b7Zu3Rp2NJF8RyUi+VbTpk1Zu3YtN9xwA48++iiJiYnMnj07\n7Fgi+YpKRPK1kiVL8uCDD7J48WJKly5Nq1at6NKlC99++23Y0UTyBZWIFAj169dn5cqV3HXXXUyd\nOpVIJMK0adM0dIrI36QSkQKjePHi3HPPPaSkpHDSSSfRqVMn2rZty1dffRV2NJG4pRKRAqd69eos\nWbKE+++/nzfeeINIJMLEiRN1VCKSBSoRKZCKFCnCzTffzNq1a6lZsyY9e/akWbNmfPzxx2FHE4kr\nKhEp0KpUqcJbb73FY489xooVK0hMTGTkyJEa0FHkIKlEpMArVKgQV155JdFolHPPPZcbb7yRs846\ni7S0tLCjieR5KhGRQMWKFZk1axbPPfccH330EbVr1+aee+5h+/btYUcTybNCKREzu9/M3jezVDN7\nycyOzLSsv5mtN7N1ZtYi0/w6ZrY2WDbazCyM7JK/mRmXXHIJ0WiUjh07MnDgQOrUqcOKFSvCjiaS\nJ4V1JDIPSHT36sAHQH8AM4sAnYAEoCUw1swKB68ZB/QETg2mlrkdWgqO8uXL8+yzz/LKK6/www8/\nUL9+fW6++WZ+/fXXsKOJ5CmhlIi7v+HuO4MflwIVg8dtgKnuvs3dPwHWA3XN7HigjLsv9dh9mJOB\ntrkeXAqcCy64gPT0dHr27MmIESOoXr06b7/9dtixRPKMvHBN5Arg9eBxBeCLTMu+DOZVCB7vOX+v\nzOxKM0s2s+TNmzdnc1wpaI444ggeffRR3nrrLQDOOeccrrrqKn788ceQk4mEL8dKxMzeNLO0vUxt\nMj1nALATeDY71+3u4909yd2Typcvn51vLQXYOeecQ2pqKjfffDMTJ04kISGBWbNmhR1LJFQ5ViLu\n3szdE/cyzQQws+7Av4BL/c+PCm8AKmV6m4rBvA38ecor83yRXHX44Ydz//33s2TJEsqWLUvr1q3p\n3LkzOuKVgiqsu7NaArcArd0985XKV4BOZlbczE4mdgF9ubtvBLaaWf3grqyuwMxcDy4SqFu3Likp\nKdxzzz1Mnz6dqlWr8txzz2noFClwDqpEzOwfZlY8eNzEzPpmvi03Cx4GSgPzzGy1mT0K4O7pwPNA\nFJgD9HH33R8d7g1MJHax/SP+vI4iEopixYpx1113sWrVKqpUqcKll15K69at+fLLLw/8YpF8wg7m\nNyczWw0kAZWB2cSOAhLc/fwcTZcNkpKSPDk5OewYks/t2rWL0aNHM2DAAIoUKcL9999Pz549KVQo\nL9y7InLozCzF3ZMO9LyD/T/8j+CW3AuBMe7eDzj+7wQUyU8KFy7MDTfcQFpaGmeccQa9evWiadOm\nrF+/PuxoIjnqYEtkh5ldAnQDXg3mFc2ZSCLx65RTTuHNN99kwoQJrFy5kmrVqvHAAw+wc+fOA79Y\nJA4dbIlcDjQAhrj7J8FF76dzLpZI/DIzevToQTQapXnz5vTr148GDRqQmpoadjSRbHdQJeLuUXfv\n6+5TzKwsUNrd78vhbCJxrUKFCrz88stMmzaNzz77jDp16nD33Xezbdu2sKOJZJuDvTvrbTMrY2ZH\nASuBCWb2YM5GE4l/ZsZFF11ERkYGnTp1YtCgQdSuXZulS5eGHU0kWxzs6awj3H0r0A6Y7O71gGY5\nF0skfzn66KN5+umnee2119i6dStnnnkmN954I7/88kvY0UT+loMtkSLBIIgX8eeFdRE5ROeffz7p\n6en06tWLkSNHUq1aNebPnx92LJEsO9gSGQTMBT5y9xVmdgrwYc7FEsm/ypQpw9ixY3nnnXcoUqQI\nzZo1o0ePHmzZsiXsaCKH7GAvrL/g7tXd/erg54/dvX3ORhPJ384++2zWrFnDrbfeyqRJk4hEIsyc\nqdF8JL4c7IX1isE3EH4TTDPMrOKBXyki+3PYYYcxbNgwli1bxjHHHEPbtm25+OKL+frrr8OOJnJQ\nDvZ01pPEBkc8IZhmBfNEJBvs/grewYMH8/LLLxOJRHjmmWc0oKPkeQdbIuXd/Ul33xlMkwB9UYdI\nNipatCgDBgxg9erVnH766XTp0oVWrVrx+eefhx1NZJ8OtkS+M7PLzKxwMF0GfJeTwUQKqqpVq/Lu\nu+/y0EMP8c4775CQkMDYsWP5448/wo4m8j8OtkSuIHZ77yZgI9AB6J5DmUQKvMKFC9O3b1/S0tKo\nX78+ffr0oUmTJnzwwQdhRxP5i4O9O+szd2/t7uXd/Rh3bwvo7iyRHHbyySfzxhtv8MQTT7B27Vqq\nV6/OfffdpwEdJc/4O192cGO2pRCRfTIzLr/8cqLRKOeffz633XYb9erVY82aNWFHE/lbJWLZlkJE\nDuj444/nxRdfZPr06WzYsIGkpCTuuOMOfv/997CjSQH2d0pE9x6KhKB9+/ZEo1EuvfRShgwZQq1a\ntVi8eHHYsaSA2m+JmNlPZrZ1L9NPxD4vIiIhOOqoo5g0aRJz5szh119/pWHDhlx33XX8/PPPYUeT\nAma/JeLupd29zF6m0u5eJLdCisjetWjRgrS0NPr06cOYMWNITEzkjTfeCDuWFCB/53SWiOQBpUuX\nZsyYMSxcuJASJUrQokULLr/8cn744Yewo0kBoBIRyScaNmzI6tWr6d+/P08//TSRSIQXX3wx7FiS\nz6lERPKREiVKMHToUFasWMFxxx1H+/bt6dChA5s2bQo7muRTKhGRfKhWrVosX76coUOH8uqrrxKJ\nRHjqqac0oKNkO5WISD5VtGhR+vfvz+rVq4lEInTv3p2WLVvy6aefhh1N8hGViEg+989//pOFCxfy\n8MMPs3jxYhITExkzZowGdJRsoRIRKQAKFSpEnz59SEtLo2HDhvTt25ezzz6b999/P+xoEudUIiIF\nyEknncTrr7/OU089RTQapUaNGgwdOpQdO3aEHU3ilEpEpIAxM7p27UpGRgatW7dmwIAB1K1bl1Wr\nVoUdTeKQSkSkgDr22GN54YUXmDFjBps2beKMM86gf//+/Pbbb2FHkziiEhEp4Nq1a0c0GqVbt24M\nGzaMmjVrsmjRorBjSZxQiYgIZcuW5fHHH2fevHls376dRo0acc011/DTTz+FHU3yOJWIiPxXs2bN\nWLt2Lddddx1jx44lMTGROXPmhB1L8jCViIj8RalSpRg1ahTvvfceJUuW5LzzzqNbt2589913YUeT\nPEglIiJ71aBBA1atWsUdd9zBc889RyQSYfr06Ro6Rf4ilBIxs3vNLNXMVpvZG2Z2QqZl/c1svZmt\nM7MWmebXMbO1wbLRZqav5xXJYcWLF+fee+8lOTmZSpUq0bFjR9q3b8/GjRvDjiZ5RFhHIve7e3V3\nrwm8CtwFYGYRoBOQALQExppZ4eA144CewKnB1DLXU4sUUDVq1GDp0qUMHz6c119/napVq/LEE0/o\nqETCKRF335rpx5L8+X3tbYCp7r7N3T8B1gN1zex4oIy7L/XY/7WTgba5GlqkgCtSpAj9+vVjzZo1\n1KhRg3//+980b96cTz75JOxoEqLQromY2RAz+wK4lOBIBKgAfJHpaV8G8yoEj/ecv6/3vtLMks0s\nefPmzdkbXKSAO+2001iwYAHjxo1j2bJlJCYm8tBDD7Fr166wo0kIcqxEzOxNM0vby9QGwN0HuHsl\n4Fngmuxct7uPd/ckd08qX758dr61iBAb0LFXr16kp6fTuHFjrr/+eho1akQ0Gg07muSyHCsRd2/m\n7ol7mWbu8dRngfbB4w1ApUzLKgbzNgSP95wvIiGqVKkSr732Gs888wwffPABtWrVYvDgwRrQsQAJ\n6+6sUzP92AbYPR71K0AnMytuZicTu4C+3N03AlvNrH5wV1ZXYM8yEpEQmBmXXnop0WiUCy+8kDvv\nvJOkpCSSk5PDjia5IKxrIsOCU1upQHPgOgB3TweeB6LAHKCPu+8+0dobmEjsYvtHwOu5nlpE9umY\nY45h6tSpvPzyy3z77bfUq1ePW265RQM65nOW32/RS0pKcv1GJJK7tmzZwi233MKECROoUqUKEydO\npHHjxmHHkkNgZinunnSg5+kT6yKS7Y488kjGjx/P/Pnz+eOPP2jSpAlXX301W7duPfCLJa6oREQk\nx5x77rmkpqZy4403Mn78eBISEpg9e3bYsSQbqUREJEeVLFmSESNGsHjxYsqUKUOrVq247LLL+Pbb\nb8OOJtlAJSIiuaJevXqsXLmSu+++m+eff55IJMK0adM0dEqcU4mISK4pXrw4AwcOJCUlhcqVK9Op\nUyfatm3Lhg362Fe8UomISK6rVq0aS5Ys4YEHHmDevHlEIhEmTJigo5I4pBIRkVAULlyYm266idTU\nVGrXrs2VV15J06ZN+eijj8KOJodAJSIioapSpQrz58/nscceIyUlhWrVqvHggw9qQMc4oRIRkdAV\nKlSIK6+8kvT0dJo2bcpNN93EmWeeSVpaWtjR5ABUIiKSZ1SsWJFXXnmFKVOm8PHHH1O7dm3uuece\ntm/fHnY02QeViIjkKWZGp06dyMjIoGPHjgwcOJA6deqwfPnysKPJXqhERCRPKleuHM8++yyzZs3i\nhx9+oEGDBtx88838+uuvYUeTTFQiIpKn/etf/yI9PZ2ePXsyYsQIqlWrxoIFC8KOJQGViIjkeUcc\ncQSPPvooCxYswMw499xzueqqq/jxxx/DjlbgqUREJG40adKE1NRU+vXrx8SJE4lEIsyaNSvsWAWa\nSkRE4srhhx/O8OHDWbZsGUcffTStW7fmkksuYfPmzWFHK5BUIiISl3Z/Be+gQYOYMWMGVatW5bnn\nntPQKblMJSIicatYsWLceeedrFq1iipVqnDppZdywQUX8MUXX4QdrcBQiYhI3EtISOC9995j5MiR\nLFiwgISEBB577DH++OOPsKPleyoREckXChcuzPXXX8/atWupW7cuvXr14txzz+XDDz8MO1q+phIR\nkXzllFNOYd68eUycOJHVq1dTvXp17r//fnbu3Bl2tHxJJSIi+Y6Z8e9//5toNEqLFi245ZZbaNCg\nAampqWFHy3dUIiKSb51wwgm89NJLPP/883z++efUqVOHu+66i23btoUdLd9QiYhIvmZmdOzYkWg0\nyiWXXMKvNzUdAAAMwUlEQVS9995L7dq1Wbp0adjR8gWViIgUCEcffTSTJ09m9uzZ/PTTT5x55pnc\ncMMN/PLLL2FHi2sqEREpUM477zzS0tK4+uqrGTVqFNWqVWP+/Plhx4pbKhERKXDKlCnDI488wsKF\nCylSpAjNmjWjR48ebNmyJexocUclIiIFVqNGjVizZg233XYbkyZNIhKJ8PLLL4cdK66oRESkQDvs\nsMP4z3/+w7JlyzjmmGO48MILueiii/j666/DjhYXVCIiIkCdOnVYsWIFQ4YMYebMmUQiEZ5++mkN\n6HgAKhERkUDRokW5/fbbWb16Naeffjpdu3alVatWfP7552FHy7NUIiIie6hatSrvvvsuo0ePZuHC\nhSQkJDB27FgN6LgXKhERkb0oXLgw1157LWlpaTRo0IA+ffrQuHFj1q1bF3a0PEUlIiKyH5UrV2bu\n3Lk8+eSTpKWlUaNGDYYNG6YBHQMqERGRAzAzunfvTkZGBq1ataJ///7Uq1eP1atXhx0tdKGWiJnd\nZGZuZuUyzetvZuvNbJ2Ztcg0v46ZrQ2WjTYzCye1iBRUxx13HDNmzGD69Ols2LCBpKQkBgwYwO+/\n/x52tNCEViJmVgloDnyeaV4E6AQkAC2BsWZWOFg8DugJnBpMLXM1sIhIoH379kSjUS677DKGDh1K\nrVq1WLx4cdixQhHmkchI4BYg803YbYCp7r7N3T8B1gN1zex4oIy7L/XYTduTgba5nlhEJHDUUUcx\nadIk5syZw2+//UbDhg3p27cvP//8c9jRclUoJWJmbYAN7r5mj0UVgC8y/fxlMK9C8HjP+ft6/yvN\nLNnMkjdv3pxNqUVE/leLFi1IS0vjmmuu4eGHHyYxMZE33ngj7Fi5JsdKxMzeNLO0vUxtgNuBu3Jq\n3e4+3t2T3D2pfPnyObUaEREASpUqxejRo3n33XcpUaIELVq04PLLL+f7778PO1qOy7EScfdm7p64\n5wR8DJwMrDGzT4GKwEozOw7YAFTK9DYVg3kbgsd7zhcRyTPOOussVq9eze23387TTz9NJBJhxowZ\nYcfKUbl+Osvd17r7Me5e2d0rEzs1VdvdNwGvAJ3MrLiZnUzsAvpyd98IbDWz+sFdWV2BmbmdXUTk\nQEqUKMGQIUNITk7mhBNOoEOHDnTo0IFNmzaFHS1H5KnPibh7OvA8EAXmAH3cfVewuDcwkdjF9o+A\n10MJKSJyEGrWrMmyZcsYNmwYr776KpFIhEmTJuW7AR0tv23QnpKSkjw5OTnsGCJSgK1bt44ePXqw\naNEimjdvzmOPPUblypXDjrVfZpbi7kkHel6eOhIREcmPTj/9dN555x0eeeQRFi9eTGJiImPGjMkX\nAzqqREREckGhQoXo3bs3aWlpNGrUiL59+9KoUSMyMjLCjva3qERERHLRSSedxOzZs5k8eTLvv/8+\nNWvWZOjQoezYsSPsaFmiEhERyWVmRpcuXYhGo7Rp04YBAwZQt25dVq5cGXa0Q6YSEREJybHHHsvz\nzz/Piy++yKZNm6hbty79+/fnt99+CzvaQVOJiIiE7MILLyQajdK9e3eGDRtGzZo1effdd8OOdVBU\nIiIieUDZsmWZOHEi8+bNY/v27Zx99tn06dOHn376Kexo+6USERHJQ5o1a0ZaWhrXX38948aNIyEh\ngddfz7ufrVaJiIjkMSVLlmTkyJG89957lCpVivPPP5+uXbvy3XffhR3tf6hERETyqAYNGrBq1Sru\nvPNOpkyZQiQS4YUXXshTQ6eoRERE8rDixYszaNAgUlJSqFSpEhdddBHt2rXjq6++CjsaoBIREYkL\n1atXZ+nSpQwfPpw5c+YQiUR4/PHHQz8qUYmIiMSJIkWK0K9fP1JTU6lRowY9evTg//7v//j4449D\ny6QSERGJM6eeeioLFixg3LhxLF++nGrVqjFq1Ch27dp14BdnM5WIiEgcKlSoEL169SI9PZ0mTZpw\nww030LBhQ6LRaO7myNW1iYhItqpUqRKvvvoqzz77LB9++CG1atXi3nvvZfv27bmyfpWIiEicMzM6\nd+5MRkYG7dq146677iIpKSlX7uBSiYiI5BPly5dnypQpzJw5kypVqnDsscfm+Dr19bgiIvI/9PW4\nIiKS41QiIiKSZSoRERHJMpWIiIhkmUpERESyTCUiIiJZphIREZEsU4mIiEiW5fsPG5rZZuCzLL68\nHPBtNsYJk7Ylb9K25D35ZTvg723LSe5e/kBPyvcl8neYWfLBfGIzHmhb8iZtS96TX7YDcmdbdDpL\nRESyTCUiIiJZphLZv/FhB8hG2pa8SduS9+SX7YBc2BZdExERkSzTkYiIiGSZSkRERLJMJbIXZtbS\nzNaZ2Xozuy3sPIfKzD41s7VmttrMkoN5R5nZPDP7MPhv2bBz7o2ZPWFm35hZWqZ5+8xuZv2D/bTO\nzFqEk3rv9rEtA81sQ7BvVpvZ+ZmW5eVtqWRmC8wsambpZnZdMD/u9s1+tiWu9o2ZlTCz5Wa2JtiO\ne4L5ubtP3F1TpgkoDHwEnAIUA9YAkbBzHeI2fAqU22PecOC24PFtwH1h59xH9rOB2kDagbIDkWD/\nFAdODvZb4bC34QDbMhC4eS/PzevbcjxQO3hcGvggyBx3+2Y/2xJX+wYwoFTwuCiwDKif2/tERyL/\nqy6w3t0/dvftwFSgTciZskMb4Kng8VNA2xCz7JO7LwS+32P2vrK3Aaa6+zZ3/wRYT2z/5Qn72JZ9\nyevbstHdVwaPfwIygArE4b7Zz7bsS57cFo/5OfixaDA5ubxPVCL/qwLwRaafv2T//4PlRQ68aWYp\nZnZlMO9Yd98YPN4EHBtOtCzZV/Z43VfXmllqcLpr96mGuNkWM6sM1CL2m29c75s9tgXibN+YWWEz\nWw18A8xz91zfJyqR/Kmhu9cEzgP6mNnZmRd67Ng2Lu/tjufsgXHETpXWBDYCI8KNc2jMrBQwA7je\n3bdmXhZv+2Yv2xJ3+8bddwV/1ysCdc0scY/lOb5PVCL/awNQKdPPFYN5ccPdNwT//QZ4idgh69dm\ndjxA8N9vwkt4yPaVPe72lbt/HfzF/wOYwJ+nE/L8tphZUWL/6D7r7i8Gs+Ny3+xtW+J537j7FmAB\n0JJc3icqkf+1AjjVzE42s2JAJ+CVkDMdNDMraWaldz8GmgNpxLahW/C0bsDMcBJmyb6yvwJ0MrPi\nZnYycCqwPIR8B233X+7AhcT2DeTxbTEzAx4HMtz9wUyL4m7f7Gtb4m3fmFl5MzsyeHwY8H/A++T2\nPgn7DoO8OAHnE7tj4yNgQNh5DjH7KcTuwFgDpO/ODxwNzAc+BN4Ejgo76z7yTyF2KmEHsXO2/95f\ndmBAsJ/WAeeFnf8gtuVpYC2QGvylPj5OtqUhsdMiqcDqYDo/HvfNfrYlrvYNUB1YFeRNA+4K5ufq\nPtGwJyIikmU6nSUiIlmmEhERkSxTiYiISJapREREJMtUIiIikmUqEZE9mNmxZvacmX0cDB2zxMwu\nDClLEzM7M9PPvcysaxhZRPamSNgBRPKS4INoLwNPuXvnYN5JQOscXGcRd9+5j8VNgJ+BxQDu/mhO\n5RDJCn1ORCQTM2tK7ENbjfeyrDAwjNg/7MWBR9z9MTNrQmwY8W+BRCAFuMzd3czqAA8CpYLl3d19\no5m9TexDbg2JfSjxA+AOYl8/8B1wKXAYsBTYBWwGrgWaAj+7+wNmVhN4FDic2AfIrnD3H4L3Xgac\nAxwJ/Nvd382+PyWRP+l0lshfJQAr97Hs38CP7n4GcAbQMxg+AmIjwV5P7DsbTgHOCsZnGgN0cPc6\nwBPAkEzvV8zdk9x9BLAIqO/utYh9/cAt7v4psZIY6e4191IEk4Fb3b06sU9a351pWRF3rxtkuhuR\nHKLTWSL7YWaPEDta2A58BlQ3sw7B4iOIjT+0HVju7l8Gr1kNVAa2EDsymRc7S0ZhYsOg7DYt0+OK\nwLRg/KZiwCcHyHUEcKS7vxPMegp4IdNTdg+QmBJkEckRKhGRv0oH2u/+wd37mFk5IBn4HLjW3edm\nfkFwOmtbplm7iP3dMiDd3RvsY12/ZHo8BnjQ3V/JdHrs79idZ3cWkRyh01kif/UWUMLMrs407/Dg\nv3OBq4PTVJjZacFIyfuyDihvZg2C5xc1s4R9PPcI/hyWu1um+T8R+wrXv3D3H4EfzKxRMKsL8M6e\nzxPJafoNRSST4GJ4W2Ckmd1C7IL2L8CtxE4XVQZWBndxbWY/XzPs7tuDU1+jg9NPRYBRxI529jQQ\neMHMfiBWZLuvtcwCpptZG2IX1jPrBjxqZocDHwOXH/oWi/w9ujtLRESyTKezREQky1QiIiKSZSoR\nERHJMpWIiIhkmUpERESyTCUiIiJZphIREZEs+38lHefu7feodQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116d7f128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot points and grid\n",
    "plt.contourf(xx, yy, grid_predictions, cmap=plt.cm.Paired, alpha=0.8)\n",
    "plt.plot(class1_x, class1_y, 'ro', label='I. setosa')\n",
    "plt.plot(class2_x, class2_y, 'kx', label='Non setosa')\n",
    "plt.title('Gaussian SVM Results on Iris Data')\n",
    "plt.xlabel('Pedal Length')\n",
    "plt.ylabel('Sepal Width')\n",
    "plt.legend(loc='lower right')\n",
    "plt.ylim([-0.5, 3.0])\n",
    "plt.xlim([3.5, 8.5])\n",
    "plt.show()\n",
    "\n",
    "# Plot batch accuracy\n",
    "plt.plot(batch_accuracy, 'k-', label='Accuracy')\n",
    "plt.title('Batch Accuracy')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n",
    "\n",
    "# Plot loss over time\n",
    "plt.plot(loss_vec, 'k-')\n",
    "plt.title('Loss per Generation')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Evaluate Test Points\n",
    "\n",
    "We create a set of test points, and evaluate the class predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "x_test_seq = np.array([4., 5., 6., 7.])\n",
    "y_test_seq = np.array([0., 1., 2.])\n",
    "\n",
    "x_test, y_test = np.meshgrid(x_test_seq,y_test_seq)\n",
    "test_points = np.c_[x_test.ravel(), y_test.ravel()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4.,  0.],\n",
       "       [ 5.,  0.],\n",
       "       [ 6.,  0.],\n",
       "       [ 7.,  0.],\n",
       "       [ 4.,  1.],\n",
       "       [ 5.,  1.],\n",
       "       [ 6.,  1.],\n",
       "       [ 7.,  1.],\n",
       "       [ 4.,  2.],\n",
       "       [ 5.,  2.],\n",
       "       [ 6.,  2.],\n",
       "       [ 7.,  2.]])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_points"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Now we can evaluate the predictions on our test points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "[test_predictions] = sess.run(prediction, feed_dict={x_data: rand_x,\n",
    "                                                     y_target: rand_y,\n",
    "                                                     prediction_grid: test_points})\n",
    "test_predictions = test_predictions.reshape(x_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  1.,  1.,  1.,  1.,  1., -1., -1.,  1., -1., -1., -1.], dtype=float32)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions.ravel()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Format the test points together with the predictions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Point [ 4.  0.] is predicted to be in class 1.0\n",
      "Point [ 5.  0.] is predicted to be in class 1.0\n",
      "Point [ 6.  0.] is predicted to be in class 1.0\n",
      "Point [ 7.  0.] is predicted to be in class 1.0\n",
      "Point [ 4.  1.] is predicted to be in class 1.0\n",
      "Point [ 5.  1.] is predicted to be in class 1.0\n",
      "Point [ 6.  1.] is predicted to be in class -1.0\n",
      "Point [ 7.  1.] is predicted to be in class -1.0\n",
      "Point [ 4.  2.] is predicted to be in class 1.0\n",
      "Point [ 5.  2.] is predicted to be in class -1.0\n",
      "Point [ 6.  2.] is predicted to be in class -1.0\n",
      "Point [ 7.  2.] is predicted to be in class -1.0\n"
     ]
    }
   ],
   "source": [
    "for ix, point in enumerate(test_points):\n",
    "    point_pred = test_predictions.ravel()[ix]\n",
    "    print('Point {} is predicted to be in class {}'.format(point, point_pred))"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda env:tf-cpu]",
   "language": "python",
   "name": "conda-env-tf-cpu-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
